package com.erp.erp_servers.User;

import com.erp.erp_entitys.Menum.MenuEntity2;
import com.erp.erp_entitys.Menum.MenumEntity;
import com.erp.erp_entitys.Resource.ResourceEntity;
import com.erp.erp_entitys.Role.RoleEntity;
import com.erp.erp_entitys.User.UserEntity;
import com.erp.erp_entitys.User.UserEntityExample;
import com.erp.erp_entitys.User.UserEntityVO;

import java.util.List;
import java.util.Map;

/**
 * @ClassName IAccountService
 * @Description 用户服务接口类
 * @Author songjizhen
 * @Date 2020/6/23 12:02
 * @Version 1.0
 */
public interface IUserService {
    /**
     * 根据code获取员工信息
     * @param code
     * @return
     */
    UserEntity selectUserByCode(String code);

    /**
     * 获取部门下所有员工
     * @param departmentCode
     * @return
     */
    List<UserEntity> selectByExample(String departmentCode);

    /**
     * 获取员工
     * @return
     */
    List<UserEntity> selectByExample(String departmentCode,String name);

    /**
     * 根据条件获取员工
     * @param example
     * @return
     */
    List<UserEntity> selectByExample(UserEntityExample example);
    Map<String,String> selectAll();
    List<UserEntity> getAllUser();
    //根据用户组编码获取用户信息
    List<UserEntity> selectUserByGroupCode(String gcode);
    List<UserEntityVO> selectUserByGroup (String gcode);
    /**
     * 根据主键删除用户
     * @param id
     * @return
     */
    int deleteByPrimaryKey(String id);

    /**
     * 删除
     * @param
     * @return
     */
    int deleteByExample(List<String> ids) throws Exception;
    /**
     * 新增员工
     * @param record
     * @return
     */
    int insertSelective(UserEntity record) throws Exception;

    /**
     * 根据主键更新用户
     * @param record
     * @return
     */
    int updateByPrimaryKeySelective(UserEntity record) throws Exception;

    /**
     * 获取当前用户的所有权限
     * @param user
     * @return
     */
   List<RoleEntity> getAllRoleByUserCode(UserEntity user);

    /**
     * 获取用户所有菜单
     * @param user
     * @return
     */
    List<MenumEntity>getAllResourceByUser(UserEntity user);
    List<MenuEntity2>getAllResourceByUser2(UserEntity user);

    /**
     * 根据父节点获其下子菜单
     * @param pid
     * @return
     */
    List<ResourceEntity>  getMenumByPid(String pid);

    /**
     * 获取全部用户（name和code）
     * @return
     */
    List<UserEntity> getAllUserNameAndCode();
    /*
     * 模糊匹配用户名和邮箱
     * */
    List<UserEntity> selectDimUser(String dim);

    /**
     * 通过用户编码集合获取用户信息
     * @param codes 用户编码集合
     * @return
     */
    List<UserEntity> getUserByUserCodeList(List<String> codes);
}
